<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>2-12 虚线</title>
</head>
<body>
  <canvas id="c" width="300" height="300" style="border: 1px solid #ccc;"></canvas>

  <script>
    const context = document.getElementById('c')
    const ctx = context.getContext('2d')

    ctx.lineWidth = 20
    ctx.strokeStyle = 'pink'

    ctx.moveTo(50, 50)
    ctx.lineTo(200, 50)
    ctx.setLineDash([10]) // 只传1个参数，实线与空白都是 10px
    ctx.stroke()


    ctx.beginPath()
    ctx.moveTo(50, 100)
    ctx.lineTo(200, 100)
    ctx.setLineDash([10, 20]) // 2个参数，此时，实线是 10px, 空白 20px
    ctx.stroke()


    ctx.beginPath()
    ctx.moveTo(50, 150)
    ctx.lineTo(200, 150)
    ctx.setLineDash([10, 20, 5]) // 传3个以上的参数，此例：10px实线，20px空白，5px实线，10px空白，20px实线，5px空白 ……

    // 获取不重复的距离
    // console.log(ctx.getLineDash())

    // 设置虚线的偏移位
    // ctx.lineDashOffset = 20

    ctx.stroke()
  </script>
</body>
</html>